package io.github.echarts.option.component;

import io.github.echarts.option.abstracts.AbstractOption;
import io.github.echarts.option.style.TextStyle;

/**
 * 提示框组件配置类
 * <p>
 * 提示框组件用于显示数据点的详细信息，当鼠标悬停或点击数据点时出现。
 * 在服务器端渲染中，提示框通常用于静态展示特定数据点的信息。
 * </p>
 */
public class Tooltip extends AbstractOption {
    
    private static final long serialVersionUID = 1L;
    
    /** 
     * 是否显示提示框组件 
     */
    private Boolean show;
    
    /**
     * 触发类型。
     * 'item'：数据项触发
     * 'axis'：坐标轴触发
     * 'none'：不触发
     */
    private String trigger;
    
    /**
     * 提示框的格式化器
     */
    private String formatter;
    
    /**
     * 提示框的背景色
     */
    private String backgroundColor;
    
    /**
     * 提示框的边框颜色
     */
    private String borderColor;
    
    /**
     * 提示框的边框宽度
     */
    private Integer borderWidth;
    
    /**
     * 提示框内边距
     */
    private Object padding;
    
    /**
     * 文本样式
     */
    private TextStyle textStyle;
    
    /**
     * 默认构造函数
     */
    public Tooltip() {
        // 默认构造函数
    }
    
    /**
     * 获取是否显示提示框
     * 
     * @return 是否显示提示框
     */
    public Boolean getShow() {
        return show;
    }
    
    /**
     * 设置是否显示提示框
     * 
     * @param show 是否显示提示框
     * @return 当前实例，用于链式调用
     */
    public Tooltip setShow(Boolean show) {
        this.show = show;
        return this;
    }
    
    /**
     * 获取触发类型
     * 
     * @return 触发类型
     */
    public String getTrigger() {
        return trigger;
    }
    
    /**
     * 设置触发类型
     * 
     * @param trigger 触发类型
     * @return 当前实例，用于链式调用
     */
    public Tooltip setTrigger(String trigger) {
        this.trigger = trigger;
        return this;
    }
    
    /**
     * 获取提示框的格式化器
     * 
     * @return 格式化器
     */
    public String getFormatter() {
        return formatter;
    }
    
    /**
     * 设置提示框的格式化器
     * 
     * @param formatter 格式化器
     * @return 当前实例，用于链式调用
     */
    public Tooltip setFormatter(String formatter) {
        this.formatter = formatter;
        return this;
    }
    
    /**
     * 获取提示框的背景色
     * 
     * @return 背景色
     */
    public String getBackgroundColor() {
        return backgroundColor;
    }
    
    /**
     * 设置提示框的背景色
     * 
     * @param backgroundColor 背景色
     * @return 当前实例，用于链式调用
     */
    public Tooltip setBackgroundColor(String backgroundColor) {
        this.backgroundColor = backgroundColor;
        return this;
    }
    
    /**
     * 获取提示框的边框颜色
     * 
     * @return 边框颜色
     */
    public String getBorderColor() {
        return borderColor;
    }
    
    /**
     * 设置提示框的边框颜色
     * 
     * @param borderColor 边框颜色
     * @return 当前实例，用于链式调用
     */
    public Tooltip setBorderColor(String borderColor) {
        this.borderColor = borderColor;
        return this;
    }
    
    /**
     * 获取提示框的边框宽度
     * 
     * @return 边框宽度
     */
    public Integer getBorderWidth() {
        return borderWidth;
    }
    
    /**
     * 设置提示框的边框宽度
     * 
     * @param borderWidth 边框宽度
     * @return 当前实例，用于链式调用
     */
    public Tooltip setBorderWidth(Integer borderWidth) {
        this.borderWidth = borderWidth;
        return this;
    }
    
    /**
     * 获取提示框内边距
     * 
     * @return 内边距
     */
    public Object getPadding() {
        return padding;
    }
    
    /**
     * 设置提示框内边距
     * 
     * @param padding 内边距
     * @return 当前实例，用于链式调用
     */
    public Tooltip setPadding(Object padding) {
        this.padding = padding;
        return this;
    }
    
    /**
     * 设置提示框内边距(整数形式)
     * 
     * @param padding 内边距值
     * @return 当前实例，用于链式调用
     */
    public Tooltip setPadding(int padding) {
        this.padding = padding;
        return this;
    }
    
    /**
     * 设置提示框内边距(数组形式)
     * 
     * @param top 上边距
     * @param right 右边距
     * @param bottom 下边距
     * @param left 左边距
     * @return 当前实例，用于链式调用
     */
    public Tooltip setPadding(int top, int right, int bottom, int left) {
        this.padding = new int[]{top, right, bottom, left};
        return this;
    }
    
    /**
     * 获取文本样式
     * 
     * @return 文本样式
     */
    public TextStyle getTextStyle() {
        return textStyle;
    }
    
    /**
     * 设置文本样式
     * 
     * @param textStyle 文本样式
     * @return 当前实例，用于链式调用
     */
    public Tooltip setTextStyle(TextStyle textStyle) {
        this.textStyle = textStyle;
        return this;
    }
} 